import { http } from "@/utils/http";
export interface TreeItem {
  id?: number;
  parentId?: number;
  isJump?: Boolean;
  title?: string;
  icon?: string;
  path?: string;
  permissions?: string;
  children?: Array<TreeItem>;
}
// interface TreeData {
//   [x: string]: any;

//   data?: Array<TreeItem>;
// }
export const queryTreeMenuList = (data?: Record<string, any>) => {
  return http.request<Array<TreeItem>>("post", `/account/api/v1/menuCollect/treeMenuList`, {
    data
  });
};
export const createMenuCollect = (data?: Record<string, any>) => {
  return http.request<Array<TreeItem>>("post", `/account/api/v1/menuCollect/createMenuCollect`, {
    data
  });
};

export const queryMenuCollectList = (data?: Record<string, any>) => {
  return http.request<Array<TreeItem>>("post", `/account/api/v1/menuCollect/queryMenuCollectList`, {
    data
  });
};
export const deleteMenuCollect = (data?: Record<string, any>) => {
  return http.request<Array<TreeItem>>(
    "post",
    `/account/api/v1/menuCollect/deleteMenuCollect
`,
    {
      data
    }
  );
};
// 获取我的任务看板数据
export const getTaskList = () => {
  return http.request("get", "/account/api/v1/task/count");
};
// 分类查询我的任务看板数据
export const queryTaskList = data => {
  return http.request("post", `/account/api/v1/task/query`, {
    data
  });
};
// 工作台-公告管理列表查询
export const pageAnnouncement = data => {
  return http.request("post", `/account/api/v1/announcement/pageAnnouncement`, { data });
};
// 工作台-个人公告列表查询
export const announcementPersonal = data => {
  return http.request("post", `/account/api/v1/announcement/personal`, { data });
};
// 工作台-个人公告未读数量查询
export const personalAnnouncement = () => {
  return http.request("post", `/account/api/v1/announcement/personalAnnouncement`);
};
// 工作台-公告新增
export const createAnnouncement = data => {
  return http.request("post", "/account/api/v1/announcement/createAnnouncement", { data });
};
// 工作台-公告编辑
export const updateAnnouncement = data => {
  return http.request("post", "/account/api/v1/announcement/updateAnnouncement", { data });
};
// 工作台-公告发布
export const publishAnnouncement = data => {
  return http.request("post", "/account/api/v1/announcement/publishAnnouncement", { data });
};
// 工作台-公告删除
export const deleteAnnouncement = data => {
  return http.request("post", "/account/api/v1/announcement/deleteAnnouncement", { data });
};
// 工作台-公告撤回
export const repealAnnouncement = data => {
  return http.request("post", "/account/api/v1/announcement/repealAnnouncement", { data });
};
// 工作台-个人公告详情
export const getPersonalAnnouncement = data => {
  return http.request("post", "/account/api/v1/announcement/getPersonalAnnouncement", { data });
};
// 工作台-公告详情
export const getAnnouncement = data => {
  return http.request("post", "/account/api/v1/announcement/getAnnouncement", { data });
};
// 工作台-公告已读-未读
export const readAnnouncement = data => {
  return http.request("post", "/account/api/v1/announcement/readAnnouncement", { data });
};
/**
 * 公告取消置顶
 * @param {object} params 工作台-公告管理删除/撤销
 * @param {number} params.id 公告ID
 * @param {string} params.serialNumber 公告序列号
 * @returns
 */
export function cancelTopAnnouncement(data) {
  return http.post(`/account/api/v1/announcement/cancelTopAnnouncement`, { data });
}
/**
 * 公告置顶
 * @param {object} params 工作台-公告管理删除/撤销
 * @param {number} params.id 公告ID
 * @param {string} params.serialNumber 公告序列号
 * @returns
 */
export function createTopAnnouncement(data) {
  return http.post(`/account/api/v1/announcement/createTopAnnouncement`, { data });
}
/**
 * 公告创建我的日程
 * @param {object} data 工作台-公告创建我的日程
 * @param {string} data.factoryId
 * @param {string} data.facCode
 * @param {object} data.taskFinishTime 任务计划完成时间
 * @param {string} data.taskTitle 任务标题
 * @param {string} data.taskOwner 任务所属人
 * @param {string} data.serialNumber 公告编号
 * @returns
 */
export function create_8(data) {
  return http.post(`/account/api/v1/announcement/createAnnouncementMyTask`, { data });
}
/**
 * 部门下拉-部门树
 * @returns
 */
export function listDeptOptionTree() {
  return http.post(`/account/api/v1/announcement/getAnnouncementPublishDept`);
}
/**
 * 工作台-创建我的日程
 * @returns
 */
export function createTask(data) {
  return http.post(`/account/api/v1/task/create`, { data });
}
/**
 * 工作台-更新我的日程状态
 * @returns
 */
export function updateTask(data) {
  return http.post(`/account/api/v1/task/update`, { data });
}
/**
 * 工作台-我的日程
 * @returns
 */
export function MyCalendar(params) {
  return http.post(`/account/api/v1/task/myCalendar`, { params });
}
/**
 * 获取我的任务
 * @param {object} params GetTaskBoardDTO
 * @param {string} params.factoryId
 * @param {string} params.facCode
 * @param {number} params.taskId 任务编号
 * @param {string} params.taskResourceId 任务来源编号
 * @param {string} params.taskOwner 任务所属人
 * @param {string} params.taskType 任务类型：LAUNCH - 发起类；HANDLE - 办理类；APPROVE - 审核类
 * @returns
 */
export function getTask(data) {
  return http.post(`/account/api/v1/task/get`, { data });
}
// 通讯录查询全部
export const listPhone = data => {
  return http.request("post", `/account/collectPhone/listPhone`, {
    data
  });
};
// 个人查询-通讯录
export const queryFixedCommunication = () => {
  return http.request("post", `/account/collectPhone/queryFixedCommunication`);
};
// 通讯录固定
export const fixedCommunication = data => {
  return http.request("post", `/account/collectPhone/fixedCommunication`, {
    data
  });
};
// 删除——通讯录取消固定，热线电话取消常用
export const deleteCollectPhone = data => {
  return http.request("post", `/account/collectPhone/deleteCollectPhone`, {
    data
  });
};
// 通讯录管理-新增
export const createEnterprise = data => {
  return http.request("post", `/account/api/v1/ExternalEnterprise/createEnterprise`, {
    data
  });
};
// 通讯录管理-删除
export const deleteEnterprise = data => {
  return http.request("post", `/account/api/v1/ExternalEnterprise/deleteEnterprise`, {
    data
  });
};
// 通讯录管理-编辑
export const updateEnterprise = data => {
  return http.request("post", `/account/api/v1/ExternalEnterprise/updateEnterprise`, {
    data
  });
};
// 通讯录管理-查询
export const pageEnterprise = data => {
  return http.request("post", `/account/api/v1/ExternalEnterprise/pageEnterprise`, {
    data
  });
};
// 个人查询-热线电话
export const queryUseHotline = () => {
  return http.request("post", `/account/collectPhone/queryUseHotline`);
};
// 热线电话-查询
export const pageHotline = data => {
  return http.request("post", `/account/hotline/pageHotline`, {
    data
  });
};
// 热线电话——新增
export const createHotline = data => {
  return http.request("post", `/account/hotline/createHotline`, {
    data
  });
};
// 热线电话——编辑
export const updateHotline = data => {
  return http.request("post", `/account/hotline/updateHotline`, {
    data
  });
};
// 热线电话——删除
export const deleteHotline = data => {
  return http.request("post", `/account/hotline/deleteHotline`, {
    data
  });
};
// 热线电话常用
export const useHotline = data => {
  return http.request("post", `/account/collectPhone/useHotline`, {
    data
  });
};
// 文件上传——公告管理富文本编辑
export const uploadFile = data => {
  return http.post(
    `/sharing/api/v1/file/upload`,
    { data },
    {
      headers: {
        noLoading: true,
        "content-type": "multipart/form-data"
      }
    }
  );
};
export interface QueryWeatherNowRes {
  /* */
  now: {
    /*观测时间 */
    obsTime: string;

    /*温度，单位：℃ */
    temp: string;

    /*最高温度，单位：℃ */
    tempMax: string;

    /*最低温度单位：℃ */
    tempMin: string;

    /*天气图标 */
    icon: string;

    /*天气描述 */
    text: string;

    /*风向角度 */
    wind360: string;

    /*风向 */
    windDir: string;

    /*风力等级 */
    windScale: string;

    /*降水量，单位：mm */
    precip: string;

    /*相对湿度，百分比数值 */
    humidity: string;

    /*湿球温度，单位：℃ */
    wetBulbTemp: string;

    /*焓值，单位：kj/kg */
    enthalpy: string;

    /*露点，单位：℃ */
    dew: string;

    /*大气压，单位：hPa */
    pressure: string;
  };

  /* */
  warning: {
    /*预警的唯一标识 */
    id: string;

    /*预警发布单位 */
    sender: string;

    /*预警发布时间 */
    pubTime: string;

    /*预警信息标题 */
    title: string;

    /*预警开始时间 */
    startTime: string;

    /*预警结束时间 */
    endTime: string;

    /*预警信息的发布状态 */
    status: string;

    /*预警严重等级 */
    severity: string;

    /*预警严重等级颜色 */
    severityColor: string;

    /*预警类型ID */
    type: string;

    /*预警类型名称 */
    typeName: string;

    /*预警信息的紧迫程度 */
    urgency: string;

    /*预警信息的确定性 */
    certainty: string;

    /*预警详细文字描述 */
    text: string;
  };
}

/**
 * 天气查询-实时
 * @param {string} date
 * @returns
 */
export function queryWeatherNow(date: string): Promise<QueryWeatherNowRes> {
  return http.post(`/account/api/v1/weather/nowWeather?date=${date}`);
}
// 响应接口
export interface QueryWeatherHourlyRes {
  /*预报时间 */
  fxTime: string;

  /*温度，单位：℃ */
  temp: string;

  /*天气图标 */
  icon: string;

  /*天气描述 */
  text: string;

  /*风向角度 */
  wind360: string;

  /*风向 */
  windDir: string;

  /*风力等级 */
  windScale: string;

  /*降水量，单位：mm */
  precip: string;

  /*相对湿度，百分比数值 */
  humidity: string;

  /*湿球温度 */
  wetBulbTemp: string;

  /*焓值 */
  enthalpy: string;

  /*露点 */
  dew: string;

  /*大气压，单位：hPa */
  pressure: string;
}

/**
 * 天气查询-24小时
 * @param {string} date
 * @returns
 */
export function queryWeatherHourly(date: object): Promise<QueryWeatherHourlyRes[]> {
  return http.post(`/account/api/v1/weather/hourlyWeather?date=${date}`);
}
// 响应接口
export interface QueryWeatherDailyRes {
  /*预报日期 */
  fxDate: string;

  /*最高温度，单位：℃ */
  tempMax: string;

  /*最低温度单位：℃ */
  tempMin: string;

  /*天气图标 */
  icon: string;

  /*天气描述 */
  text: string;

  /*风向角度 */
  wind360: string;

  /*风向 */
  windDir: string;

  /*风力等级 */
  windScale: string;

  /*降水量，单位：mm */
  precip: string;

  /*相对湿度，百分比数值 */
  humidity: string;

  /*湿球温度，单位：℃ */
  wetBulbTemp: string;

  /*焓值，单位：kj/kg */
  enthalpy: string;

  /*露点，单位：℃ */
  dew: string;

  /*大气压，单位：hPa */
  pressure: string;
}
/**
 * 天气查询-30日
 * @returns
 */
export function queryWeatherDaily(): Promise<QueryWeatherDailyRes[]> {
  return http.post(`/account/api/v1/weather/dailyWeather`);
}
// 响应接口
export interface QueryHistoryWeatherHourlyRes {
  /*预报时间 */
  fxTime: string;

  /*温度，单位：℃ */
  temp: string;

  /*天气图标 */
  icon: string;

  /*天气描述 */
  text: string;

  /*风向角度 */
  wind360: string;

  /*风向 */
  windDir: string;

  /*风力等级 */
  windScale: string;

  /*降水量，单位：mm */
  precip: string;

  /*相对湿度，百分比数值 */
  humidity: string;

  /*湿球温度 */
  wetBulbTemp: string;

  /*焓值 */
  enthalpy: string;

  /*露点 */
  dew: string;

  /*大气压，单位：hPa */
  pressure: string;
}

/**
 * 历史天气查询-小时
 * @param {string} date
 * @returns
 */
export function queryHistoryWeatherHourly(date: object): Promise<QueryHistoryWeatherHourlyRes[]> {
  return http.post(`/account/api/v1/weather/historyHourlyWeather?date=${date}`);
}
// 响应接口
export interface QueryHistoryWeatherDailyRes {
  /*预报日期 */
  fxDate: string;

  /*最高温度，单位：℃ */
  tempMax: string;

  /*最低温度单位：℃ */
  tempMin: string;

  /*天气图标 */
  icon: string;

  /*天气描述 */
  text: string;

  /*风向角度 */
  wind360: string;

  /*风向 */
  windDir: string;

  /*风力等级 */
  windScale: string;

  /*降水量，单位：mm */
  precip: string;

  /*相对湿度，百分比数值 */
  humidity: string;

  /*湿球温度，单位：℃ */
  wetBulbTemp: string;

  /*焓值，单位：kj/kg */
  enthalpy: string;

  /*露点，单位：℃ */
  dew: string;

  /*大气压，单位：hPa */
  pressure: string;
}

/**
 * 历史天气查询-日
 * @param {object} params QueryWeatherDTO
 * @param {number} params.pageNum
 * @param {number} params.pageSize
 * @param {string} params.orderByColumn
 * @param {string} params.isAsc
 * @param {object} params.startTime 开始时间
 * @param {object} params.endTime 结束时间
 * @param {string} params.orderBy
 * @returns
 */
export function queryHistoryWeatherDaily(data): Promise<QueryHistoryWeatherDailyRes[]> {
  return http.post(`/account/api/v1/weather/historyDailyWeather`, { data });
}
// 响应接口
export interface QueryDailyWeatherRes {
  /*预报日期 */
  fxDate: string;

  /*最高温度，单位：℃ */
  tempMax: string;

  /*最低温度单位：℃ */
  tempMin: string;

  /*天气图标 */
  icon: string;

  /*天气描述 */
  text: string;

  /*风向角度 */
  wind360: string;

  /*风向 */
  windDir: string;

  /*风力等级 */
  windScale: string;

  /*降水量，单位：mm */
  precip: string;

  /*相对湿度，百分比数值 */
  humidity: string;

  /*湿球温度，单位：℃ */
  wetBulbTemp: string;

  /*焓值，单位：kj/kg */
  enthalpy: string;

  /*露点，单位：℃ */
  dew: string;

  /*大气压，单位：hPa */
  pressure: string;
}

/**
 * 天气查询-3日
 * @returns
 */
export function queryDailyWeather(): Promise<QueryDailyWeatherRes[]> {
  return http.post(`/account/api/v1/weather/dailyWeatherThree`);
}
/**
 * 设为常用电话
 * @param {object} params 通讯录常用
 * @param {string} params.enterpriseNo 厂商编号
 * @param {string} params.enterpriseName 厂商名称
 * @param {string} params.contactName 联系人姓名
 * @param {string} params.phone 联系电话
 * @param {number} params.createBy 创建人id
 * @param {string} params.createByName 创建人名称
 * @param {object} params.createTime 创建时间
 * @param {string} params.source 来源：personal-个人通讯录;all-公共通讯录;user-用户管理;equipment-设备列表
 * @returns
 */
export function createCommunication_1(data) {
  return http.post(`/account/api/v1/ExternalEnterprise/useEnterprise`, { data });
}
/**
 * 取消常用电话
 * @param {object} params 删除
 * @param {string} params.factoryId
 * @param {number} params.id
 * @param {string} params.enterpriseNo 厂商编号
 * @param {string} params.empNo 关联编号:员工号/厂商编号/热线电话编号
 * @returns
 */
export function deleteCommunication(data) {
  return http.post(`/account/api/v1/ExternalEnterprise/deleteUseEnterprise`, { data });
}
// 参数接口
export interface UnionLoginParams {
  /*第三方平台 */
  thirdPlatform?: string;
}

// 响应接口
export interface UnionLoginRes {
  /*登陆凭证 */
  token: string;

  /*重定向地址 */
  redirectUrl: string;
}

/**
 * 联合登录接口
 * @param {object} data UnionLoginDTO
 * @param {string} data.thirdPlatform 第三方平台
 * @returns
 */
export function unionLogin(data: UnionLoginParams): Promise<UnionLoginRes> {
  return http.post(`/account/api/v1/unionLogin`, { data });
}
